{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "852aa6fd-9b9e-4ba3-882f-a0cff3973550",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "from pathlib import Path\n",
    "from pol.utils.validation.scene_saver import load_scenes, count_h5_keys\n",
    "from pol.utils.validation.mso_eval import MSOSolution, MSOEvaluation, distance_sqr_matrix\n",
    "from pol.utils.path import PathHelper"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3850ed8c-4645-4730-a52d-edd891ba02a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob = 'conic' # 'prodsin_2d'\n",
    "path_helper = PathHelper('../../tests/analytical/')\n",
    "\n",
    "fig_size = 10\n",
    "\n",
    "if prob == 'prodsin_2d':\n",
    "    gt_method = 'pd_mlr'\n",
    "    candidate_methods = ['gol_res_hhlr', 'pol_res_lot']\n",
    "    obj_thresholds = [-0.99, -0.98, -0.97, -0.96, -0.95]\n",
    "    precision_thresholds = torch.linspace(0.1, 2.0, 50)\n",
    "    theta_range = None # [0,1,2,3,4,5,6,7]\n",
    "    method_itr = {\n",
    "        # 'pol_res_lot': 5\n",
    "    }\n",
    "elif prob == 'conic':\n",
    "    gt_method = 'pd_mlr'\n",
    "    candidate_methods = ['pol_res_lot', 'gol_res_mlr']\n",
    "    obj_thresholds = [0.1, 0.2]\n",
    "    precision_thresholds = torch.linspace(0.05, 0.4, 50)\n",
    "    theta_range = None # [0,1,2,3,4,5,6,7]\n",
    "    method_itr = {\n",
    "        'pol_mlp_relu_lot_hor10': 5,\n",
    "        'pol_res_lot_hor10': 5,\n",
    "        'pol_res_mmot': 5,\n",
    "        'pol_res_lot': 5,\n",
    "        'pol_mlp_lot': 5,\n",
    "        #'gol_res_mlr': 50,\n",
    "    }\n",
    "else: \n",
    "    assert(False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "079fec4e-960a-4785-830e-72ccf49b4432",
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_solution(method, is_gt):\n",
    "    scene_path = path_helper.locate_scene_h5(prob, method)\n",
    "    scene = load_scenes(scene_path)[0]\n",
    "    if method in method_itr:\n",
    "        k = method_itr[method]\n",
    "    else:\n",
    "        k = count_h5_keys(scene, 'itr') - 1\n",
    "    tmp = scene['itr_{}'.format(k)]\n",
    "    print(scene['info']['thetas'][:2])\n",
    "    X = torch.from_numpy(tmp['X'][:])\n",
    "    loss = torch.from_numpy(tmp['loss'][:])\n",
    "    S = torch.from_numpy(tmp['satisfy'][:])\n",
    "    \n",
    "    if theta_range is not None:\n",
    "        X = X[theta_range]\n",
    "        loss = loss[theta_range]\n",
    "        S = S[theta_range]\n",
    "    \n",
    "    sol = MSOSolution(X=X, F=loss, S=S)\n",
    "    \n",
    "    if is_gt:\n",
    "        witness = torch.from_numpy(scene['info']['witness'][:])\n",
    "        return sol, witness\n",
    "    return sol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9255a838-f02b-4848-9a8c-0ba820ec128a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0.67749304  0.52402794 -0.47527453  0.5777735  -0.5126657   0.1520035 ]\n",
      " [ 0.11664642  0.7022882  -0.80134845  0.6528455   0.1334467  -0.14463821]]\n",
      "inf_dist=13.967267036437988\n"
     ]
    }
   ],
   "source": [
    "gt_sol, witness = load_solution(gt_method, is_gt=True)\n",
    "inf_dist = distance_sqr_matrix(witness, witness).max().sqrt().item()\n",
    "print(f'inf_dist={inf_dist}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c0467436-6c54-4983-9d08-bf2bb603f6e7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Evaluating method pol_res_lot with threshold 0.1 ...\n",
      "[[ 0.67749304  0.52402794 -0.47527453  0.5777735  -0.5126657   0.1520035 ]\n",
      " [ 0.11664642  0.7022882  -0.80134845  0.6528455   0.1334467  -0.14463821]]\n",
      "{'divergence': tensor(0.0643), 'precision': tensor([0.7143, 0.7456, 0.7750, 0.7980, 0.8164, 0.8302, 0.8433, 0.8541, 0.8642,\n",
      "        0.8722, 0.8792, 0.8848, 0.8906, 0.8975, 0.9027, 0.9067, 0.9096, 0.9127,\n",
      "        0.9157, 0.9195, 0.9227, 0.9258, 0.9283, 0.9312, 0.9331, 0.9356, 0.9375,\n",
      "        0.9393, 0.9412, 0.9429, 0.9449, 0.9469, 0.9486, 0.9502, 0.9519, 0.9531,\n",
      "        0.9545, 0.9558, 0.9570, 0.9583, 0.9596, 0.9606, 0.9619, 0.9632, 0.9644,\n",
      "        0.9652, 0.9662, 0.9675, 0.9681, 0.9691]), 'gt_count': tensor(929.2461), 'candidate_count': tensor(965.0312)}\n",
      "Evaluating method gol_res_mlr with threshold 0.1 ...\n",
      "[[ 0.67749304  0.52402794 -0.47527453  0.5777735  -0.5126657   0.1520035 ]\n",
      " [ 0.11664642  0.7022882  -0.80134845  0.6528455   0.1334467  -0.14463821]]\n",
      "{'divergence': tensor(0.1070), 'precision': tensor([0.4760, 0.5150, 0.5487, 0.5773, 0.6042, 0.6283, 0.6505, 0.6700, 0.6873,\n",
      "        0.7034, 0.7183, 0.7316, 0.7456, 0.7579, 0.7694, 0.7805, 0.7912, 0.8024,\n",
      "        0.8129, 0.8215, 0.8303, 0.8387, 0.8473, 0.8540, 0.8609, 0.8669, 0.8729,\n",
      "        0.8786, 0.8841, 0.8893, 0.8941, 0.8997, 0.9043, 0.9088, 0.9128, 0.9167,\n",
      "        0.9201, 0.9236, 0.9264, 0.9294, 0.9331, 0.9366, 0.9395, 0.9419, 0.9447,\n",
      "        0.9480, 0.9521, 0.9556, 0.9584, 0.9614]), 'gt_count': tensor(929.2461), 'candidate_count': tensor(828.4727)}\n",
      "Evaluating method pol_res_lot with threshold 0.2 ...\n",
      "[[ 0.67749304  0.52402794 -0.47527453  0.5777735  -0.5126657   0.1520035 ]\n",
      " [ 0.11664642  0.7022882  -0.80134845  0.6528455   0.1334467  -0.14463821]]\n",
      "{'divergence': tensor(0.0722), 'precision': tensor([0.7064, 0.7378, 0.7673, 0.7903, 0.8086, 0.8232, 0.8362, 0.8469, 0.8568,\n",
      "        0.8647, 0.8716, 0.8772, 0.8831, 0.8900, 0.8952, 0.8991, 0.9020, 0.9051,\n",
      "        0.9080, 0.9119, 0.9150, 0.9181, 0.9206, 0.9234, 0.9252, 0.9276, 0.9294,\n",
      "        0.9312, 0.9330, 0.9346, 0.9365, 0.9385, 0.9400, 0.9441, 0.9455, 0.9466,\n",
      "        0.9478, 0.9490, 0.9500, 0.9512, 0.9525, 0.9536, 0.9550, 0.9562, 0.9573,\n",
      "        0.9582, 0.9593, 0.9628, 0.9636, 0.9647]), 'gt_count': tensor(945.2461), 'candidate_count': tensor(982.3867)}\n",
      "Evaluating method gol_res_mlr with threshold 0.2 ...\n",
      "[[ 0.67749304  0.52402794 -0.47527453  0.5777735  -0.5126657   0.1520035 ]\n",
      " [ 0.11664642  0.7022882  -0.80134845  0.6528455   0.1334467  -0.14463821]]\n",
      "{'divergence': tensor(0.1296), 'precision': tensor([0.4586, 0.4971, 0.5304, 0.5586, 0.5849, 0.6084, 0.6292, 0.6481, 0.6643,\n",
      "        0.6780, 0.6913, 0.7029, 0.7151, 0.7265, 0.7362, 0.7461, 0.7550, 0.7650,\n",
      "        0.7733, 0.7806, 0.7901, 0.7975, 0.8059, 0.8123, 0.8185, 0.8249, 0.8305,\n",
      "        0.8359, 0.8417, 0.8470, 0.8526, 0.8587, 0.8641, 0.8692, 0.8731, 0.8773,\n",
      "        0.8814, 0.8851, 0.8887, 0.8928, 0.8969, 0.9005, 0.9040, 0.9076, 0.9109,\n",
      "        0.9143, 0.9181, 0.9211, 0.9240, 0.9265]), 'gt_count': tensor(945.2461), 'candidate_count': tensor(888.1484)}\n",
      "eval time: 79.00219782069325, plot time: 0.06695730425417423\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAARuCAYAAAD3dbKhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAColElEQVR4nOzdd3yV5cHG8d+dvfeAkEAGe4+wBAQEN7itVau4tdWq7Wv7dvdttcMOq627VsRR98KJe4DI3juEAGFkkr1znvePJyAgI3CSPGdc388nn5OcPOdw5fQ0ubyf+7lvY1kWIiIiInJyApwOICIiIuLNVKZERERE3KAyJSIiIuIGlSkRERERN6hMiYiIiLhBZUpERETEDSpTIiIiIm5QmRIRj2OMKTDGTD+Jxw03xiwzxtS13Q4/xrHfMcZ81XbsZ+7kFRH/pjIlIj7BGBMCvAk8C8QDc4A32+4/knLgfuDPXRJQRHyWypSIeBRjzDNAT+AtY0yNMean7XzoFCAIuN+yrEbLsv4JGOC0Ix1sWdZHlmW9BOzugNgi4sdUpkTEo1iWdRWwA5hpWVaUZVl/McZUHOPjZ20PHQSstg7dI2t12/0iIp0myOkAIiLHY1lWXDsOiwIqD7uvEoju8EAiIgfRyJSI+IoaIOaw+2KAageyiIgfUZkSEU908Kk62uZOHe3jF22HrQOGGmPMQQ8d2na/iEin0Wk+EfFERUD2/i8sy4pqx2M+A1qB240xjwI3tt3/yZEONsYEAsHYvwcDjDFhQKtlWc1u5BYRP6SRKRHxRH8CftU2wfyu9jzAsqwm4ALgaqACuA64oO1+jDFXGmMOHqW6CqgHHgEmtX3+7476AUTEf5hDL3wRERERkROhkSkRERERN6hMiYiIiLhBZUpERETEDSpTIiIiIm5QmRIRERFxg2PrTCUlJVmZmZlO/fMiIiIi7bZs2bJSy7KSj/Q9x8pUZmYmS5cudeqfFxEREWk3Y8z2o31Pp/lERERE3KAyJSIiIuIGlSkRERERN3jURsfNzc0UFhbS0NDgdBS/EBYWRnp6OsHBwU5HERER8VoeVaYKCwuJjo4mMzMTY4zTcXyaZVmUlZVRWFhIVlaW03FERES8lked5mtoaCAxMVFFqgsYY0hMTNQooIiIiJs8qkwBKlJdSK+1iIiI+zyuTImIiIh4E5UpN02ZMqVLFx+95ppreOWVV455zP33309dXV0XJRIREfFvKlNdqLW1tUv+HZUpERGRruNRV/Md7HdvrWP97qoOfc6BaTH8duagYx5TUFDAWWedxdixY1mxYgV9+/bl6aefZuHChdx11120tLQwevRoHnnkEUJDQ4/7b0ZFRfHjH/+YefPm8fe//52CggL++c9/0tTUxNixY3n44YcBuP7661m6dCnGGK677jp+9KMfHfe5P/74429leuyxx9i9ezdTp04lKSmJTz/9tH0vjoiIiJwUjUwdwaZNm7jppptYvXo1MTEx3HfffVxzzTW8+OKLrFmzhpaWFh555JF2PVdtbS2DBw9m0aJFJCYm8uKLL7JgwQJWrlxJYGAgzz33HCtXrmTXrl2sXbuWNWvWcO211x73eRsaGo6Y6fbbbyctLY1PP/1URUpERKQLeOzI1PFGkDpTRkYGEyZMAOB73/sed999N1lZWfTt2xeAWbNm8dBDD3HnnXce97kCAwO5+OKLAXskadmyZYwePRqA+vp6UlJSmDlzJvn5+fzwhz/k3HPP5Ywzzjju827atOmkM4mIiEjH8dgy5aSOXDIgLCyMwMBAwF4oc9asWfzpT3/61nGrVq1i3rx5PPTQQ7z00ks8+eSTx3xey7I6LKOIiIicPJ3mO4IdO3awcOFCAJ5//nmmT59OQUEBeXl5ADzzzDNMnjz5hJ932rRpvPLKKxQXFwNQXl7O9u3bKS0txeVycfHFF3P33XezfPny4z5X//79j5opOjqa6urqE84nIiIiJ04jU0cwYMAA5syZw80330yfPn144IEHGDduHJdeeumByd633HLLCT/vwIEDueeeezjjjDNwuVwEBwfz0EMPER4ezrXXXovL5QI44sjV4cLCwpg9e/YRM910002cffbZdO/eXfOmREREOplx6nRRbm6udfj6TBs2bGDAgAGO5NmvoKCAGTNmsHbtWkdzdBVPeM1FREQ8nTFmmWVZuUf6nk7ziYiIiLhBp/kOk5mZeVKjUmPHjqWxsfGQ+5555hmGDBlyUjluvfVWFixYcMh9d9xxR7uWTRAREZGuozLVQRYtWtShz/fQQw916POJiIh4o1aXxb66JsprmyiraaKstvHA5+W19scpvRO5cmwvxzKqTImIiEinq2lsYU9FPaU1TVQ3NFPd0PLNbaP9eVVDy4H7q+qbKa9toqK+maNN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\n",
      "text/plain": [
       "<Figure size 720x1440 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from timeit import default_timer as timer\n",
    "\n",
    "fig, axes = plt.subplots(len(obj_thresholds), 1, squeeze=False)\n",
    "fig.set_figheight(fig_size*len(obj_thresholds))\n",
    "fig.set_figwidth(fig_size)\n",
    "\n",
    "eval_time = 0\n",
    "plot_time = 0\n",
    "for i, obj_threshold in enumerate(obj_thresholds):\n",
    "    for method in candidate_methods:\n",
    "        print('Evaluating method {} with threshold {} ...'.format(method, obj_threshold))\n",
    "        sol = load_solution(method, is_gt=False)\n",
    "        \n",
    "        t0 = timer()\n",
    "        mso_eval = MSOEvaluation(witness=witness, inf_dist=inf_dist,\n",
    "                                 obj_threshold=obj_threshold, \n",
    "                                precision_thresholds=precision_thresholds,\n",
    "                                gt_solution=gt_sol,\n",
    "                                candidate_solution=sol)\n",
    "        mso_eval.eval()\n",
    "        eval_time += timer() - t0\n",
    "        print(mso_eval.avg_results)\n",
    "        \n",
    "        t0 = timer()\n",
    "        axes[i, 0].plot(precision_thresholds, mso_eval.avg_results['precision'], label=method)\n",
    "        axes[i, 0].legend()\n",
    "        axes[i, 0].set_title('t={}'.format(obj_threshold))\n",
    "        plot_time += timer() - t0\n",
    "print('eval time: {}, plot time: {}'.format(eval_time, plot_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "30a736be-a4a7-4ba7-b1e3-1884dbe3fae2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([256, 1024, 2])\n"
     ]
    }
   ],
   "source": [
    "print(gt_sol.X.shape)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
